from typing import Iterable
from Block import Block

# def deep_maker(x)->Directory:...

class Directory:

    def __init__(self, data=[], copy=True, deep_make=True):
        self.data = [] # type:list[Block]

    def map(self, fn)->Directory:...
        
    def to_json(self, path: str, file_only=False, dir_only=False, force_abspath = False, indent=None)->None:
        """注：若file_only 和 dir_only 同时为 True 则 全都输出."""
        ...

    def copy(self)->Directory:...

    def shuffle(self)->Directory:...

    def unfold(self)->Directory:...

    def append(self, obj)->Directory:...

    def extend(self, obj)->Directory:...
    
    def remove(self, x)->Directory:...

    def pop(self, idx)->Directory:...

    def extension_filter(self, *extensions)->Directory:...

    @staticmethod
    def make(*child)->Directory:...

    @property
    def abspaths(self)->Directory:...
    
    
    @property
    def super_dir_names(self)->Directory:...

    def __add__(self, x)->Directory:...

    def __len__(self)->int:...
    
    def __iter__(self)->Iterable[Directory|Block]:...
    
    def __getitem__(self, idx)->Directory|Block:...

    def __setitem__(self, k, v)->Directory:...